package com.nantong.admin.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.nantong.admin.domain.SysUser;
import com.nantong.admin.domain.model.request.user.SysUserSearch;
import com.nantong.admin.domain.model.response.user.SysUserVo;
import com.nantong.common.mybatis.core.page.PageQuery;
import com.nantong.common.mybatis.core.page.TableDataInfo;

/**
 * 用户 业务层
 *
 * @author nantong
 */
public interface ISysUserService extends IService<SysUser> {

    /**
     * 通过用户名查询用户
     *
     * @param userName 用户名
     * @return 用户对象信息
     */
    SysUser selectUserByUserName(String userName);

    /**
     * 获取用户分页
     * @param search 查询条件
     * @param pageQuery 分页条件
     * @return 用户分页信息
     */
    TableDataInfo<SysUserVo> selectPageList(SysUserSearch search, PageQuery pageQuery);

    List<SysUserVo> searchList(SysUserSearch search);

    /**
     * 获取用户信息及角色
     * @param userId 用户ID
     * @return 用户信息及角色
     */
    SysUser getUserWithRoles(Long userId);

    /**
     * 更新用户信息及角色
     * @param user 用户信息
     * @return 是否成功
     */
    boolean updateUserWithRoles(SysUser user);

    /**
     * 新增用户及角色
     * @param user 用户信息
     * @return 是否成功
     */
    boolean saveUserWithRoles(SysUser user);

}
